package main

import (
	"fmt"
	"os"
	"path/filepath"
)

func main() {
	// 调用tree函数，打印指定路径下的目录结构
	tree(".")
}

func tree(path string) {
	// 打开目录
	dir, err := os.Open(path)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer dir.Close()

	//读取目录中的文件和子目录
	entries, err := dir.Readdir(-1)
	if err != nil {
		fmt.Println(err)
		return
	}

	// 遍历目录中的文件和子目录
	for _, entry := range entries {
		// 判断是文件还是目录
		if entry.IsDir() {
			// 打印目录名，并递归调用tree函数
			fmt.Printf("%s\n", filepath.Join(path, entry.Name()))
			tree(filepath.Join(path, entry.Name()))
		} else {
			// 打印文件名
			fmt.Printf("  %s\n", filepath.Join(path, entry.Name()))
		}
	}
}
